// 连接到服务器
int connect_to_server(const char *server_ip, int server_port)
{
    int conn_fd;
    struct sockaddr_in serv_addr;

    // 创建套接字
    conn_fd = socket(AF_INET, SOCK_STREAM, 0);
    if (conn_fd < 0)
    {
        printf("创建socket失败: %s\n", strerror(errno));
        return -1;
    }

    // 设置服务器地址
    memset(&serv_addr, 0, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(server_port);

    // 转换 IP 地址
    if (inet_aton(server_ip, &serv_addr.sin_addr) == 0)
    {
        printf("无效的 IP 地址: %s\n", server_ip);
        close(conn_fd);
        return -1;
    }

    // 尝试连接到服务器（阻塞调用）
    if (connect(conn_fd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
    {
        printf("连接到服务器 [%s:%d] 失败: %s\n", server_ip, server_port, strerror(errno));
        close(conn_fd);
        return -1;
    }

    return conn_fd;
}

